home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
pluginy Firefox
/
59011
/
59011.xpi
/
chrome
/
swifttabs.jar
/
content
/
swifttabs.js
< prev
next >
Wrap
Text File
|
2010-01-25
|
13KB
|
313 lines
function swifttabs(event) {
var prev = swiftTabs_getPrefValue("prev","int");
var next = swiftTabs_getPrefValue("next","int");
var close = swiftTabs_getPrefValue("close","int");
var prevModKeys = swiftTabs_getPrefValue("prevModKeys","string");
var nextModKeys = swiftTabs_getPrefValue("nextModKeys","string");
var closeModKeys = swiftTabs_getPrefValue("closeModKeys","string");
var prevOverride = swiftTabs_getPrefValue("prevOverride","bool");
var nextOverride = swiftTabs_getPrefValue("nextOverride","bool");
var closeOverride = swiftTabs_getPrefValue("closeOverride","bool");
var prevCancelOnForm = swiftTabs_getPrefValue("prevCancelOnForm","bool");
var nextCancelOnForm = swiftTabs_getPrefValue("nextCancelOnForm","bool");
var closeCancelOnForm = swiftTabs_getPrefValue("closeCancelOnForm","bool");
if (!prev) prev = KeyEvent.DOM_VK_F1;
if (!next) next = KeyEvent.DOM_VK_F2;
if (!close) close = KeyEvent.DOM_VK_F4;
var onForm = false;
var elt = document.commandDispatcher.focusedElement;
if (elt) {
var ln = elt.localName.toLowerCase();
if (ln == "input" || ln == "textarea" || ln == "select" || ln == "button" || ln == "isindex")
onForm = true;
}
var win = document.commandDispatcher.focusedWindow;
if (win && win.document.designMode == "on")
onForm = true;
var keyVars = 0;
keyVars = swiftTabs_doTabAction(event,prev,prevModKeys,prevOverride,prevCancelOnForm,onForm,"prev");
if (keyVars == 0)
keyVars = swiftTabs_doTabAction(event,next,nextModKeys,nextOverride,nextCancelOnForm,onForm,"next");
if (keyVars == 0)
keyVars = swiftTabs_doTabAction(event,close,closeModKeys,closeOverride,closeCancelOnForm,onForm,"close");
if (keyVars == 2) { // when a set key was pressed and it should override its default function.
event.preventDefault();
event.stopPropagation();
}
}
function swiftTabs_doTabAction(event,theKey,modKeys,override,cancelOnForm,onForm,tabAction) {
if (cancelOnForm && onForm)
return 0;
else if (event.keyCode > 0) {
if (event.keyCode != theKey)
return 0;
} else if (theKey < 1000){
return 0;
} else if (String.fromCharCode(event.charCode).toLowerCase() != String.fromCharCode(theKey - 1000).toLowerCase()) {
return 0;
}
var ctrlKey = modKeys.charAt(0);
var altKey = modKeys.charAt(1);
var shiftKey = modKeys.charAt(2);
var commandKey = modKeys.charAt(3);
if (event.ctrlKey == ctrlKey && event.altKey == altKey && event.shiftKey == shiftKey && event.metaKey == commandKey) {
switch(tabAction) {
case "prev":
if (gBrowser.tabContainer.selectedIndex == 0) { // for Deer Park
gBrowser.tabContainer.selectedItem = gBrowser.tabContainer.lastChild;
} else {
gBrowser.tabContainer.advanceSelectedTab(-1);
}
break;
case "next":
if (gBrowser.tabContainer.selectedItem == gBrowser.tabContainer.lastChild) { // for Deer Park
gBrowser.tabContainer.selectedItem = gBrowser.tabContainer.firstChild;
} else {
gBrowser.tabContainer.advanceSelectedTab(1);
}
break;
case "close":
var tab = gBrowser.mCurrentTab;
if(tab) gBrowser.removeTab(tab);
//window._content.window.close();
break;
}
if (override)
return 2;
else
return 1;
} else {
return 0;
}
}
function swiftTabs_initOptionsWindow() {
/* obj1 = document.getElementById("prevkey");
obj2 = document.getElementById("nextkey"); */
var menuArray = Array("prevkey","nextkey","closekey");
for (i = 0; i < menuArray.length; i++) {
obj = document.getElementById(menuArray[i]);
for (j = 0; j < 10; j++) {
menuitem = document.createElement("menuitem");
menuitem.setAttribute("label",j);
menuitem.setAttribute("value",1048+j);
obj.appendChild(menuitem);
}
for (j = 65; j < 91; j++) {
menuitem = document.createElement("menuitem");
menuitem.setAttribute("label",String.fromCharCode(j));
menuitem.setAttribute("value",j+1000);
obj.appendChild(menuitem);
}
}
document.getElementById("keytoprev").value = swiftTabs_getPrefValue("prev","int");
document.getElementById("keytonext").value = swiftTabs_getPrefValue("next","int");
document.getElementById("keytoclose").value = swiftTabs_getPrefValue("close","int");
document.getElementById("prevOverride").checked = swiftTabs_getPrefValue("prevOverride","bool");
document.getElementById("nextOverride").checked = swiftTabs_getPrefValue("nextOverride","bool");
document.getElementById("closeOverride").checked = swiftTabs_getPrefValue("closeOverride","bool");
document.getElementById("prevCancelOnForm").checked = swiftTabs_getPrefValue("prevCancelOnForm","bool");
document.getElementById("nextCancelOnForm").checked = swiftTabs_getPrefValue("nextCancelOnForm","bool");
document.getElementById("closeCancelOnForm").checked = swiftTabs_getPrefValue("closeCancelOnForm","bool");
var prevModKeys = swiftTabs_getPrefValue("prevModKeys","string");
var nextModKeys = swiftTabs_getPrefValue("nextModKeys","string");
var closeModKeys = swiftTabs_getPrefValue("closeModKeys","string");
if (!prevModKeys) prevModKeys = "0000";
if (!nextModKeys) nextModKeys = "0000";
if (!closeModKeys) closeModKeys = "0000";
if(prevModKeys.charAt(0)==0) document.getElementById("prevCtrl").checked = false;
else if(prevModKeys.charAt(0)==1) document.getElementById("prevCtrl").checked = true;
if(prevModKeys.charAt(1)==0) document.getElementById("prevAlt").checked = false;
else if(prevModKeys.charAt(1)==1) document.getElementById("prevAlt").checked = true;
if(prevModKeys.charAt(2)==0) document.getElementById("prevShift").checked = false;
else if(prevModKeys.charAt(2)==1) document.getElementById("prevShift").checked = true;
if(prevModKeys.charAt(3)==0) document.getElementById("prevComm").checked = false;
else if(prevModKeys.charAt(3)==1) document.getElementById("prevComm").checked = true;
if(nextModKeys.charAt(0)==0) document.getElementById("nextCtrl").checked = false;
else if(nextModKeys.charAt(0)==1) document.getElementById("nextCtrl").checked = true;
if(nextModKeys.charAt(1)==0) document.getElementById("nextAlt").checked = false;
else if(nextModKeys.charAt(1)==1) document.getElementById("nextAlt").checked = true;
if(nextModKeys.charAt(2)==0) document.getElementById("nextShift").checked = false;
else if(nextModKeys.charAt(2)==1) document.getElementById("nextShift").checked = true;
if(nextModKeys.charAt(3)==0) document.getElementById("nextComm").checked = false;
else if(nextModKeys.charAt(3)==1) document.getElementById("nextComm").checked = true;
if(closeModKeys.charAt(0)==0) document.getElementById("closeCtrl").checked = false;
else if(closeModKeys.charAt(0)==1) document.getElementById("closeCtrl").checked = true;
if(closeModKeys.charAt(1)==0) document.getElementById("closeAlt").checked = false;
else if(closeModKeys.charAt(1)==1) document.getElementById("closeAlt").checked = true;
if(closeModKeys.charAt(2)==0) document.getElementById("closeShift").checked = false;
else if(closeModKeys.charAt(2)==1) document.getElementById("closeShift").checked = true;
if(closeModKeys.charAt(3)==0) document.getElementById("closeComm").checked = false;
else if(closeModKeys.charAt(3)==1) document.getElementById("closeComm").checked = true;
}
function swiftTabs_getPrefValue(prefName,prefType) {
var prefService = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefService).getBranch('swifttabs.');
if (prefService.prefHasUserValue(prefName)) {
switch (prefType) {
case 'int': return prefService.getIntPref(prefName);
case 'bool': return prefService.getBoolPref(prefName);
case 'string': return prefService.getCharPref(prefName);
}
} else {
return false;
}
}
function swiftTabs_setPrefValue() {
var prefService = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefService).getBranch('swifttabs.');
var tempArray = Array();
var prevModKeys = "";
var nextModKeys = "";
var closeModKeys = "";
tempArray[0] = document.getElementById("prevCtrl").checked;
tempArray[1] = document.getElementById("prevAlt").checked;
tempArray[2] = document.getElementById("prevShift").checked;
tempArray[3] = document.getElementById("prevComm").checked;
for (i = 0; i < 4; i++) {
if (tempArray[i])
prevModKeys += "1";
else
prevModKeys += "0";
}
tempArray[0] = document.getElementById("nextCtrl").checked;
tempArray[1] = document.getElementById("nextAlt").checked;
tempArray[2] = document.getElementById("nextShift").checked;
tempArray[3] = document.getElementById("nextComm").checked;
for (i = 0; i < 4; i++) {
if (tempArray[i])
nextModKeys += "1";
else
nextModKeys += "0";
}
tempArray[0] = document.getElementById("closeCtrl").checked;
tempArray[1] = document.getElementById("closeAlt").checked;
tempArray[2] = document.getElementById("closeShift").checked;
tempArray[3] = document.getElementById("closeComm").checked;
for (i = 0; i < 4; i++) {
if (tempArray[i])
closeModKeys += "1";
else
closeModKeys += "0";
}
prefService.setIntPref("prev",document.getElementById("keytoprev").value);
prefService.setIntPref("next",document.getElementById("keytonext").value);
prefService.setIntPref("close",document.getElementById("keytoclose").value);
prefService.setCharPref("prevModKeys",prevModKeys);
prefService.setCharPref("nextModKeys",nextModKeys);
prefService.setCharPref("closeModKeys",closeModKeys);
prefService.setBoolPref("prevCancelOnForm",document.getElementById("prevCancelOnForm").checked);
prefService.setBoolPref("nextCancelOnForm",document.getElementById("nextCancelOnForm").checked);
prefService.setBoolPref("closeCancelOnForm",document.getElementById("closeCancelOnForm").checked);
prefService.setBoolPref("prevOverride",document.getElementById("prevOverride").checked);
prefService.setBoolPref("nextOverride",document.getElementById("nextOverride").checked);
prefService.setBoolPref("closeOverride",document.getElementById("closeOverride").checked);
}
function swiftTabs_convertOldPrefs() {
window.removeEventListener("load",swiftTabs_convertOldPrefs, true);
var prefService = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefService).getBranch('swifttabs.');
if (!prefService.prefHasUserValue("gSwift_prev"))
return;
try {
var prev = prefService.getIntPref("gSwift_prev");
prefService.setIntPref("prev",prev);
prefService.clearUserPref("gSwift_prev");
} catch(e) {}
try {
var next = prefService.getIntPref("gSwift_next");
prefService.setIntPref("next",next);
prefService.clearUserPref("gSwift_next");
} catch(e) {}
try {
var override = prefService.getBoolPref("gSwift_override");
prefService.setBoolPref("prevOverride",override);
prefService.setBoolPref("nextOverride",override);
prefService.setBoolPref("closeOverride",override);
prefService.clearUserPref("gSwift_override");
} catch(e) {}
try {
var prevModKeys = "";
var tempArray = Array();
tempArray[0] = prefService.getBoolPref("gSwift_prev_ctrl");
tempArray[1] = prefService.getBoolPref("gSwift_prev_alt");
tempArray[2] = prefService.getBoolPref("gSwift_prev_shift");
tempArray[3] = prefService.getBoolPref("gSwift_prev_comm");
for (i = 0; i < 4; i++) {
if (tempArray[i])
prevModKeys += "1";
else
prevModKeys += "0";
}
prefService.setCharPref("prevModKeys",prevModKeys);
prefService.clearUserPref("gSwift_prev_ctrl");
prefService.clearUserPref("gSwift_prev_alt");
prefService.clearUserPref("gSwift_prev_shift");
prefService.clearUserPref("gSwift_prev_comm");
} catch(e) {}
try {
var nextModKeys = "";
var tempArray = Array();
tempArray[0] = prefService.getBoolPref("gSwift_next_ctrl");
tempArray[1] = prefService.getBoolPref("gSwift_next_alt");
tempArray[2] = prefService.getBoolPref("gSwift_next_shift");
tempArray[3] = prefService.getBoolPref("gSwift_next_comm");
for (i = 0; i < 4; i++) {
if (tempArray[i])
nextModKeys += "1";
else
nextModKeys += "0";
}
prefService.setCharPref("nextModKeys",nextModKeys);
prefService.clearUserPref("gSwift_next_ctrl");
prefService.clearUserPref("gSwift_next_alt");
prefService.clearUserPref("gSwift_next_shift");
prefService.clearUserPref("gSwift_next_comm");
} catch(e) {}
}
window.addEventListener("keypress", swifttabs, false);
window.addEventListener("load",swiftTabs_convertOldPrefs, true);